/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dp1.pucp.Simulacion.Controlador;

import com.dp1.pucp.Administracion.DAO.RRHHDAO;
import com.dp1.pucp.Modelo.Algoritmos.EmpleadoAlgoritmo;
import com.dp1.pucp.Modelo.Clases.Empleado;
import com.dp1.pucp.Modelo.Clases.Historico;
import com.dp1.pucp.Modelo.Clases.Superhombre;
import com.dp1.pucp.Simulacion.DAO.SimulacionDAO;
import com.dp1.pucp.Simulacion.VIsta.DetalleOperarioGUI;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

/**
 *
 * @author Rodrigo
 */
public class DetalleOperarioControlador {
    
    private Empleado empleado;
    private EmpleadoAlgoritmo empleadoA;
    private int posicion;
    private DetalleOperarioGUI vista;
    private AsignacionEmpleadosControlador padre;
    
    
    public DetalleOperarioControlador(EmpleadoAlgoritmo empleadoA,Empleado empleado,DetalleOperarioGUI gui,AsignacionEmpleadosControlador padre, int posicion){
        
        this.empleado=empleado;
        this.empleadoA=empleadoA;
        this.vista=gui;
        this.padre=padre;
        this.posicion=posicion;
        vista.addGuardarListener(new guardarListener());
        vista.addCerrarListener(new cerrarListener());
//        vista.addActivarListener(new activarListener());
//        vista.addCancelarListener(new cancelarListener());
        vista.setNombre(empleado.getNombre());
        vista.setAPaterno(empleado.getApPaterno());
        vista.setAMaterno(empleado.getApMaterno());
        vista.setSueldo(empleado.getSueldo());
        //falta hacer forma de rellenarlo
        vista.setPHorneado(empleadoA.getProduccion()[0]);
        vista.setMHorneado(empleadoA.getMermas()[0]);
        vista.setPRellenado(empleadoA.getProduccion()[2]);
        vista.setMRellenado(empleadoA.getMermas()[2]);
        vista.setPDecorado(empleadoA.getProduccion()[1]);
        vista.setMDecorado(empleadoA.getMermas()[1]);
        vista.setPEmpaquetado(empleadoA.getProduccion()[3]);
        vista.setMEmpaquetado(empleadoA.getMermas()[3]);
        
        llenarTurnoCombo();
        vista.getCombo().setSelectedIndex(empleado.getTurnoTrabajo()-1);
        
        
                
        
    }
    
    
    class guardarListener implements ActionListener {
        
        @Override
        public void actionPerformed(ActionEvent e) {           
            //empleado.setTurnoTrabajo(vista.getCombo().getSelectedIndex()+1);          
            padre.getControlador().redistribuirTurno(empleadoA, posicion, vista.getCombo().getSelectedIndex()+1);
            vista.mostrarAviso("Se guardaron exitosamente los cambios");
            padre.ActualizarTabla();//probando la actualizacion
            vista.dispose();
        }
        
    }
    
    class activarListener implements ActionListener {
        
         @Override
        public void actionPerformed(ActionEvent e) {
            SimulacionDAO dao= new SimulacionDAO();
            RRHHDAO rhh = new RRHHDAO();
            Superhombre superhombre= dao.getSuperHombre(empleadoA.getIdempleado());
            if (superhombre.getIdsuperhombre()==0){//no existe super hombre
                Superhombre superh= new Superhombre();
                superh.setEmpleado(empleado);
                superh.setProduccionHorneado(vista.getPHorneado());
                superh.setProduccionDecorado(vista.getPDecorado());
                superh.setProduccionRellenado(vista.getPRellenado());
                superh.setProduccionEmpaquetado(vista.getPEmpaquetado());
                superh.setMermaHorneado(vista.getMHorneado());
                superh.setMermaDecorado(vista.getMDecorado());
                superh.setMermaRellenado(vista.getMRellenado());
                superh.setMermaEmpaquetado(vista.getMEmpaquetado());
                superh.setEstado(1);
                rhh.guardarSuperHombre(superh);
                
            }else {//existe super hombre
                superhombre.setProduccionHorneado(vista.getPHorneado());
                superhombre.setProduccionDecorado(vista.getPDecorado());
                superhombre.setProduccionRellenado(vista.getPRellenado());
                superhombre.setProduccionEmpaquetado(vista.getPEmpaquetado());
                superhombre.setMermaHorneado(vista.getMHorneado());
                superhombre.setMermaDecorado(vista.getMDecorado());
                superhombre.setMermaRellenado(vista.getMRellenado());
                superhombre.setMermaEmpaquetado(vista.getMEmpaquetado());
                superhombre.setEstado(1);
                rhh.guardarSuperHombre(superhombre);
            }
            
            int []produccion = new int[4];
            int []mermas = new int[4];           
            produccion[0]=vista.getPHorneado();produccion[1]=vista.getPDecorado();
            produccion[2]=vista.getPRellenado();produccion[3]=vista.getPEmpaquetado();
            mermas[0]=vista.getMHorneado();mermas[1]=vista.getMDecorado();
            mermas[2]=vista.getMRellenado();mermas[3]=vista.getMEmpaquetado();
            empleadoA.setProduccion(produccion);
            empleadoA.setMermas(mermas);
            vista.mostrarAviso("Se guardaron exitosamente parametros de Super Hombre");
        }
        
    }
    
    
    class cancelarListener implements ActionListener {
        
        @Override
        public void actionPerformed(ActionEvent e) {
            SimulacionDAO dao= new SimulacionDAO();
            RRHHDAO rhh = new RRHHDAO();
            Superhombre superhombre= dao.getSuperHombre(empleadoA.getIdempleado());
            if (superhombre.getIdsuperhombre()!=0){
                superhombre.setEstado(0);
                rhh.guardarSuperHombre(superhombre);
                vista.mostrarAviso("Se desactivo exitosamente la opcion Super Hombre");               
            }else{
                vista.mostrarAviso("Desactivacion Fallida, activar opcion Super Hombre primero");
            }         
        }     
    }
    
    
    
    class cerrarListener implements ActionListener {
        
        @Override
        public void actionPerformed(ActionEvent e) {
            padre.ActualizarTabla();
            vista.dispose();
        }
        
    }
    
    private void llenarTurnoCombo(){
        //lstEstado = m.listarEstado();
        ArrayList<String> arreglo = new ArrayList();
        arreglo.add("MAÑANA");
        arreglo.add("TARDE");
        arreglo.add("NOCHE");
        vista.llenaComboTurno(arreglo);
    }
    
    
    
}